package StruttureDati;

import java.util.NoSuchElementException;
import java.util.Vector;

/**
 * Classe VectorQueue:
 *
 * Realizzazione della coda con un Vector.
 */
public class VectorQueue<E> implements Queue<E> {
  
	Vector<E> v;
 
    /**
     * Costruttore della coda.
     */
    public VectorQueue() {
        this.v = new Vector<E>();
    }

    /**
     * Verifica che la coda sia logicamente vuota.
     * @return  <code>true</code> se la coda &egrave; vuota;
     *          <code>false</code> altrimenti.
     */
    public boolean isEmpty() {
        return v.isEmpty();
    }

    /**
     *  Svuota la coda.
     */
    public void clear() {
        v.clear();
    }

    /**
     * Restituisce l'oggetto in testa alla coda senza estrarlo.
     * @return   l'oggetto in testa.
     * @exception NoSuchElementException con coda vuota.
     */
    public E peek() {
        if (isEmpty())
            throw new NoSuchElementException();
        return v.firstElement();
    }

    /**
     * Inserisce un oggetto in fondo alla coda.
     * @param x  l'oggetto da inserire.
     * @return   l'oggetto inserito.
     * @exception IllegalArgumentException se l'argomento passato
     *            &egrave; <code>null</code>.  
     */
    public E enqueue(E x) {
	if (x == null)
	    throw new IllegalArgumentException();
         v.addElement(x);
         return x;
    }

    /**
     * Rimuove e restituisce l'oggetto in testa alla coda.
     * @return   l'oggetto in testa.
     * @exception EmptyQueueException con coda vuota.
     */
    public E dequeue() {
        if (isEmpty())
            throw new NoSuchElementException();
        return v.remove(0);
    }
    public String toString(){
    	int n=v.size();String res="";
    	for(int i=0;i<n;i++)res=res+v.get(i)+" ";
    	return res;
    }/*

    public static void main(String args[]){
    	Queue<String> coda = new VectorQueue<String>();
    	coda.enqueue("Anna");
    	coda.enqueue(" balla ");
    	coda.enqueue(" coi lupi ");
    	System.out.println("coda="+coda);
    	System.out.println("first:"+coda.dequeue()+" coda dopo l'estrazione"+coda);

    }*/
}

